package com.jlpay.open.jlpay.sdk.java.model.openmerch.register.response;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.databind.PropertyNamingStrategies;
import com.fasterxml.jackson.databind.annotation.JsonNaming;
import com.jlpay.open.jlpay.sdk.java.model.BaseResponse;
import com.jlpay.open.jlpay.sdk.java.model.openmerch.register.AuditDetail;
import com.jlpay.open.jlpay.sdk.java.model.openmerch.register.FunctionResultDto;
import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;

import java.util.Date;
import java.util.List;

/**
 * @author liuaobo
 * createTime 2024/3/19
 */
@Getter
@Setter
@NoArgsConstructor
@AllArgsConstructor
@JsonNaming(PropertyNamingStrategies.SnakeCaseStrategy.class)
public class IncomingQueryResponse extends BaseResponse {
    /**
     * 业务申请编号
     */
    private String applyId;

    /**
     * 审核状态
     * 01：审核通过,
     * 02：审核中，
     * 09：审核驳回
     */
    private String auditStatus;

    /**
     * 审核驳回详情
     */
    private List<AuditDetail> auditDetail;

    /**
     * 审核驳回描述
     */
    private String auditFailure;

    /**
     * 商户号
     */
    private String merchNo;

    /**
     * 协议编号
     */
    private String signId;

    /**
     * 签约状态
     * 00:未签约
     * 01:已签约
     * 02:签约中
     * 09:签约失败
     */
    private String signStatus;

    /**
     * 委托合同协议编号
     */
    private String signDelegateeId;

    /**
     * 授权收款模式下，被授权人的签约状态
     */
    private String signDelegateeStatus;

    /**
     * 协议链接
     */
    private String signUrl;

    /**
     * 授权收款模式下，被授权人的承诺函、电子协议签约链接
     */
    private String signDelegateeUrl;

    /**
     * 终端号
     */
    private String termNo;

    /**
     * 审核时间
     * 该业务审核时间，时间格式“YYYY-MM-DD HH:MM:SS”
     * 商户核心没有该时间，开放平台记录获取到审核状态的时间为准。
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private Date auditEndTime;

    /**
     * 开通功能
     */
    private FunctionResultDto functions;


}
